﻿namespace Xenta.Enums
{
    /// <summary>
    /// Defines the account sort options.
    /// </summary>
    public enum AccountSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by email.
        /// </summary>
        Email,

        /// <summary>
        /// Order by username.
        /// </summary>
        Username,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the file sort options.
    /// </summary>
    public enum FileSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by name.
        /// </summary>
        Name,

        /// <summary>
        /// Order by MIME type.
        /// </summary>
        MimeType,

        /// <summary>
        /// Order by size.
        /// </summary>
        Size,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the language sort options.
    /// </summary>
    public enum LanguageSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by code.
        /// </summary>
        Code,

        /// <summary>
        /// Order by name.
        /// </summary>
        Name
    }

    /// <summary>
    /// Defines the localization profile sort options.
    /// </summary>
    public enum LocalizationProfileSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by code.
        /// </summary>
        Code,

        /// <summary>
        /// Order by name.
        /// </summary>
        Name,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    ///   Defines the log record sort options.
    /// </summary>
    public enum LogRecordSortBy : byte
    {
        /// <summary>
        ///   Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        ///   Order by source.
        /// </summary>
        Source,

        /// <summary>
        ///   Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the measure unit sort options.
    /// </summary>
    public enum MeasureUnitSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by code.
        /// </summary>
        Code,

        /// <summary>
        /// Order by name.
        /// </summary>
        Name,

        /// <summary>
        /// Order by ratio.
        /// </summary>
        Ratio
    }

    /// <summary>
    /// Defines the message sort options.
    /// </summary>
    public enum MessageSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by sender.
        /// </summary>
        From,

        /// <summary>
        /// Order by recipient.
        /// </summary>
        To,

        /// <summary>
        /// Order by sending date.
        /// </summary>
        SentOn,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the message template sort options.
    /// </summary>
    public enum MessageTemplateSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by code.
        /// </summary>
        Code,

        /// <summary>
        /// Order by sender.
        /// </summary>
        From,

        /// <summary>
        /// Order by recipient.
        /// </summary>
        To,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the region sort options.
    /// </summary>
    public enum RegionSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by code.
        /// </summary>
        Code,

        /// <summary>
        /// Order by name.
        /// </summary>
        Name
    }

    /// <summary>
    /// Defines the role sort options.
    /// </summary>
    public enum RoleSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by name.
        /// </summary>
        Name,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn = 03
    }
    
    /// <summary>
    /// Defines the session sort options.
    /// </summary>
    public enum SessionSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn,

        /// <summary>
        /// Order by access date.
        /// </summary>
        AccessedOn
    }

    /// <summary>
    /// Defines the time zone sort options.
    /// </summary>
    public enum TimeZoneSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by code.
        /// </summary>
        Code,

        /// <summary>
        /// Order by name.
        /// </summary>
        Name,

        /// <summary>
        /// Order by UTC offset.
        /// </summary>
        UtcOffset
    }

    /// <summary>
    /// Defines the file owner sort options.
    /// </summary>
    public enum FileOwnerSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by account email.
        /// </summary>
        AccountEmail,

        /// <summary>
        /// Order by account email.
        /// </summary>
        AccountUsername,

        /// <summary>
        /// Order by quota.
        /// </summary>
        Quota,

        /// <summary>
        /// Order by quota usage.
        /// </summary>
        QuotaUsage,

        /// <summary>
        /// Order by file count.
        /// </summary>
        FileCount,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the file folder sort options.
    /// </summary>
    public enum FileFolderSortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by size.
        /// </summary>
        Size,

        /// <summary>
        /// Order by file count.
        /// </summary>
        FileCount,

        /// <summary>
        /// Order by creation date.
        /// </summary>
        CreatedOn
    }

    /// <summary>
    /// Defines the currency sort options.
    /// </summary>
    public enum CurrencySortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by code.
        /// </summary>
        Code,

        /// <summary>
        /// Order by name.
        /// </summary>
        Name,

        /// <summary>
        /// Order by rate.
        /// </summary>
        Rate
    }

    /// <summary>
    /// Defines the country sort options.
    /// </summary>
    public enum CountrySortBy : byte
    {
        /// <summary>
        /// Order by identifier.
        /// </summary>
        ID,

        /// <summary>
        /// Order by code.
        /// </summary>
        Code,

        /// <summary>
        /// Order by name.
        /// </summary>
        Name
    }
}
